/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package servlets.javabeans;

import fr.charlesen.projets.utt.lo09.entites.Enseignantsuiveur;
import fr.charlesen.projets.utt.lo09.entites.Etudiants;
import fr.charlesen.projets.utt.lo09.entites.Stages;
import fr.charlesen.projets.utt.lo09.facades.EnseignantsuiveurFacadeLocal;
import fr.charlesen.projets.utt.lo09.facades.EtudiantsFacadeLocal;
import fr.charlesen.projets.utt.lo09.sessionBeans.ProgrammeBossLocal;
//import java.util.HashMap;
import java.util.List;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

/**
 *
 * @author Charles EDOU NZE
 */
@ManagedBean(name = "contacts")
@RequestScoped
public class ContactsBean {

    @EJB
    private ProgrammeBossLocal prog;
    @EJB
    private EnseignantsuiveurFacadeLocal suiveurFacade;
    @EJB
    private EtudiantsFacadeLocal etudiantFacade;
    private List<Enseignantsuiveur> listSuiveur;
    private List<Etudiants> listEtudiants;
    private List<Etudiants> resulats;
    private List<Stages> resultatsStage;
    private Etudiants etudiant;
    private Enseignantsuiveur suiveur;
    //private HashMap<String, Object> champs;
    private int etudiantID;
    private int suiveurID;

    /** Creates a new instance of ContactsBean */
    public ContactsBean() {
        setEtudiant(new Etudiants());
        setSuiveur(new Enseignantsuiveur());
        //setChamps(champs);
    }

    public List<Enseignantsuiveur> getListSuiveur() {
        listSuiveur = prog.listSuiveur();
        return listSuiveur;
    }

    public void setListSuiveur(List<Enseignantsuiveur> listSuiveur) {
        this.listSuiveur = listSuiveur;
    }

    public List<Etudiants> getListEtudiants() {
        listEtudiants = prog.listEtu();
        return listEtudiants;
    }

    public Etudiants getEtudiant() {
        return etudiant;
    }

    public void setEtudiant(Etudiants etudiant) {
        this.etudiant = etudiant;
    }

    public Enseignantsuiveur getSuiveur() {
        return suiveur;
    }

    public void setSuiveur(Enseignantsuiveur suiveur) {
        this.suiveur = suiveur;
    }

    public String doAddEtu() {
        ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
        HttpServletRequest request = (HttpServletRequest) ec.getRequest();
        String nom = request.getParameter("nom");
        String prenom = request.getParameter("prenom");

        etudiant.setId(prog.getTotalEtu() + 2);
        etudiant.setAutorisation(0);
        etudiant.setNom(nom);
        etudiant.setPrenom(prenom);
        prog.addEtu(etudiant);
        return "../tmpl/index.xhtml";
    }

    public String doDelEtu() {
        ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
        HttpServletRequest request = (HttpServletRequest) ec.getRequest();
        int idEtudiant = Integer.parseInt(request.getParameter("id"));
        prog.delEtu(idEtudiant);
        return "../tmpl/index.xhtml";
    }

    public String doAddSuiveur() {
        ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
        HttpServletRequest request = (HttpServletRequest) ec.getRequest();
        String nom = request.getParameter("nom");
        String prenom = request.getParameter("prenom");
        String bureau = request.getParameter("bureau");
        String email = request.getParameter("email");

        suiveur.setId(prog.getTotalSuiveur() + 2);
        suiveur.setNom(nom);
        suiveur.setPrenom(prenom);
        suiveur.setBureau(bureau);
        suiveur.setEmail(email);
        prog.addSuiveur(suiveur);

        return "../tmpl/index.xhtml";
    }

    public String doDelSuiveur() {
        ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
        HttpServletRequest request = (HttpServletRequest) ec.getRequest();
        int idSuiveur = Integer.parseInt(request.getParameter("id"));
        prog.delSuiveur(idSuiveur);
        return "../tmpl/index.xhtml";
    }

    public String doConnect() {
        return "../tmpl/index.xhtml";
    }

    public int getEtudiantID() {
        return etudiantID;
    }

    public void setEtudiantID(int etudiantID) {
        this.etudiantID = etudiantID;
    }

    public int getSuiveurID() {
        return suiveurID;
    }

    public void setSuiveurID(int suiveurID) {
        this.suiveurID = suiveurID;
    }


    /*
     * On assigne un suiveur à un étudiant
     */
    public String doAssignSuiveur() {
        /*
         * On récupère l'ID de l'étudiant afin d'afficher son nom dans le message :
         * "Assigner un suiveur à l'étudiant : Nom_De_L_Etudiant "
         * int idEtu = Integer.parseInt(request.getParameter("idEtu"));
         * request.setAttribute("NomEtu", prog.listEtuData(idEtu).getNom() + " " + prog.listEtuData(idEtu).getPrenom());
         * request.setAttribute("idEtudiant", idEtu);
         *
         */

        return "../tmpl/pages/assignSuiveur.xhtml";
    }

    public String backAssignSuiveur() {

        /* On récupère les IDs de l'étudiant et de son futur suiveur...
         * On assigne ensuite le suiveur à l'étudiant concerné.
         *
         */

        //int idsuiveurAss = Integer.parseInt(request.getParameter("suiveurAss"));
        //int idetudiantAss = Integer.parseInt(request.getParameter("etudiantAss"));

        /* On récupère les contacts concernés...
         * ...Puis on assigne un suiveur à un étudiant.
         */

        //etudiantFacade.find(idsuiveurAss).setIdSuiveur(idetudiantAss);

        return "../indexStages.xhtml";
    }

    public List<Etudiants> getResulats(String valeur) {
        resulats = prog.findByValeur(valeur);
        return resulats;
    }

    public void setResulats(List<Etudiants> resulats) {
        this.resulats = resulats;
    }

    public List<Stages> getResultatsStage(String valeur) {
        resultatsStage = prog.findByValeur2(valeur);
        return resultatsStage;
    }

    public void setResultatsStage(List<Stages> resulatsStage) {
        this.resultatsStage = resulatsStage;
    }
/*
    public HashMap<String, Object> getChamps() {
        return champs;
    }

    public void setChamps(HashMap<String, Object> champs) {
        this.champs = champs;
    }
 *
 */

    public String doSearch() {
        /*
        ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
        HttpServletRequest request = (HttpServletRequest) ec.getRequest();
        String nom = request.getParameter("nom");
        String prenom = request.getParameter("prenom");
        String type = request.getParameter("type");
        String entreprise = request.getParameter("entreprise");
        String ville = request.getParameter("ville");
        String pays = request.getParameter("pays");
        
        HashMap<String, Object> champ = new HashMap<String, Object>();
        if( !nom.equals("")&& !prenom.equals("") && !type.equals("") && !entreprise.equals("") && !ville.equals("")) {
            champ.put("nom", getResulats(nom));
            champ.put("prenom", getResulats(prenom));
            champ.put("type", getResultatsStage(type));
            champ.put("entreprise", getResultatsStage(entreprise));
            champ.put("ville", getResultatsStage(ville));
            champ.put("pays", getResultatsStage(pays));
            request.setAttribute("champs", champ);
            setChamps(champ);
         *
         */
        return "pages/resultats.xhtml";
    }
}
